<?php
class PerfilesController extends AppController {

	var $name = 'Perfiles';
	var $uses = array('Perfile', 'Responsabilidade', 'Contacto', 'Conductuale', 'Especifica','Carrera','Academico');
	var $helpers = array('Html', 'Form', 'Javascript', 'Ajax','Access');

	function index() {
	//	Verificacion de sesion del sistema		
		if(!$this->Access->getMy('username')){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}
		$this->Perfile->recursive = 0;
		$this->set('perfiles', $this->paginate());
	}

	function view($id = null) {
	//	Verificacion de sesion del sistema		
		if(!$this->Access->getMy('username')){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}
		if (!$id) {
			$this->Session->setFlash(__('Invalid perfile', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('perfile', $this->Perfile->read(null, $id));
	}

	function add() {
	//	Verificacion de sesion del sistema		
		if(!$this->Access->getMy('username')){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}
		if (!empty($this->data)) {
			
			$form = $this->data;		
			//Seleccion de las carreras
			$carreras_seleccionadas = $form['Perfile']['carreras'];		

			$competencias_conductuales = ""; $i=1;
			foreach ($form['Perfile']['competencias_conductuales'] as $competencia):
				$competencias_conductuales.=($i<count($form['Perfile']['competencias_conductuales']))?$competencia.", ":$competencia;
				$i++;
			endforeach;
			$competencias_especificas = ""; $i=1;
			foreach ($form['Perfile']['competencias_especificas'] as $competencia):
				$competencias_especificas.=($i<count($form['Perfile']['competencias_especificas']))?$competencia.", ":$competencia;
				$i++;
			endforeach;			
			
			$form['Perfile']['competencias_conductuales'] = $competencias_conductuales;
			$form['Perfile']['competencias_especificas'] = $competencias_especificas;
			
			$this->Perfile->create();			
			
			if ($this->Perfile->save($form)) {
				foreach ($carreras_seleccionadas as $carrera):			
					$registro['Academico']= array('perfile_id'=>$this->Perfile->id,'carrera_id'=>$carrera);					
					$this->Academico->create();
					$this->Academico->save($registro);
				endforeach;				
				$this->Session->setFlash(__('El perfil ha sido guardado', true));

				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('El perfil no ha sido guardado. Intente de nuevo.', true));
			}
		}
		$conductuales = $this->Conductuale->find('list',array('fields'=>array('Conductuale.id','Conductuale.nombre')));
		$especificas = $this->Especifica->find('list',array('fields'=>array('Especifica.id','Especifica.nombre')));
		$carreras = $this->Carrera->find('list',array('fields'=>array('Carrera.id','Carrera.nombre'),'order'=>'Carrera.nombre ASC'));
		$this->set(compact('conductuales','especificas','carreras'));
	}

	function edit($id = null) {
	//	Verificacion de sesion del sistema		
		if(!$this->Access->getMy('username')){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid perfile', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			$form = $this->data;
			
			//Seleccion de las carreras
			$carreras_seleccionadas = $form['Perfile']['carreras'];
						
			//Carreras Antiguas
			$carreras_actuales = $this->Academico->find('list',array('fields'=>array('Academico.id','Academico.carrera_id'),'conditions'=>array('Academico.perfile_id'=>$id)));	
			
			//Filtrando las carreras que se eliminan			
			$eliminadas = array_diff($carreras_actuales, $carreras_seleccionadas);
						
			foreach ($eliminadas as $eliminar):
				//Aqui se elimina la carrera de academico
				$dato = $this->Academico->find('first',array('fields'=>array('Academico.id'),'conditions'=>array('Academico.perfile_id'=>$id),'AND'=>array('Academico.carrera_id'=>$eliminar)));
				$dato = $dato['Academico']['id'];
				$this->Academico->delete($dato);			
			endforeach;
						
			//Filtro de la nuevas			
			foreach($carreras_seleccionadas as $carrera):
				if(!in_array($carrera,$carreras_actuales)){
					//Aqui se ingresa
					$registro['Academico']= array('perfile_id'=>$id,'carrera_id'=>$carrera);					
					$this->Academico->create();
					$this->Academico->save($registro);
				}												
			endforeach;			
			
			$competencias_conductuales = ""; $i=1;
			foreach ($form['Perfile']['competencias_conductuales'] as $competencia):
				$competencias_conductuales.=($i<count($form['Perfile']['competencias_conductuales']))?$competencia.", ":$competencia;
				$i++;
			endforeach;
			$competencias_especificas = ""; $i=1;
			foreach ($form['Perfile']['competencias_especificas'] as $competencia):
				$competencias_especificas.=($i<count($form['Perfile']['competencias_especificas']))?$competencia.", ":$competencia;
				$i++;
			endforeach;			
			
			$form['Perfile']['competencias_conductuales'] = $competencias_conductuales;
			$form['Perfile']['competencias_especificas'] = $competencias_especificas;
			
			if ($this->Perfile->save($form)) {
				$this->Session->setFlash(__('El perfil ha sido guardado', true));

				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The perfile could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Perfile->read(null, $id);
		}
		
		$conductuales_actuales = split(',',$this->data['Perfile']['competencias_conductuales']);
		$especificas_actuales = split(',',$this->data['Perfile']['competencias_especificas']);		
		
		$conductuales = $this->Conductuale->find('list',array('fields'=>array('Conductuale.id','Conductuale.nombre')));
		$especificas = $this->Especifica->find('list',array('fields'=>array('Especifica.id','Especifica.nombre')));
		$carreras = $this->Carrera->find('list',array('fields'=>array('Carrera.id','Carrera.nombre'),'order'=>'Carrera.nombre ASC'));
		$carreras_actuales = $this->Academico->find('list',array('fields'=>array('Academico.id','Academico.carrera_id'),'conditions'=>array('Academico.perfile_id'=>$id)));
		
		$this->set(compact('conductuales', 'especificas', 'conductuales_actuales', 'especificas_actuales','carreras','carreras_actuales'));
	}

	function delete($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for perfile', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Perfile->delete($id)) {
			$this->Session->setFlash(__('Perfile deleted', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Perfile was not deleted', true));
		$this->redirect(array('action' => 'index'));
	}
}
?>